<?php

namespace App\Interfaces;
use App\Interfaces\RefundGoodsOperationRecordService;

/*
 * 退货接口
 * 
 * @date:2015/12/18
 * @author:Leen
 */
interface RefundGoodsService
{

    /*
     * 创建收货服务单
     * @param string $order_sn              订单编号
     * @param int $goods_id                 商品id
     * @param int $order_goods_id           订单商品表id
     * @param string $goods_sn              商品编号
     * @param mediumint $number             商品数量
     * @param int $user_id                  申请售后的用户id
     * @param string $real_name             用户真实姓名（从前台得到的）
     * @param string $phone                 用户的电话号码，与购买时所用的号码一致
     * @param decimal $shop_price           商品单价
     * @param decimal $goods_real_price     商品折扣后的单价
     * @param string $reason                退货原因
     * @param string $remark                售后备注信息
     *
     * @date:2016/02/18
     * @author:Leen
     */
    public function createReturnGoods($user_id, $order_sn, $goods_id, $order_goods_id, $goods_sn, $number, $real_name, $phone, $shop_price, $goods_real_price, $reason='', $remark='', RefundGoodsOperationRecordService $refundGoodsOperationRecordService);

    /**
     * 更新服务单
     *
     * @param int $users_id             当前操作用户的id; users_id=0 表示系统创建
     * @param string $refund_sn         服务单编号
     * @param tinyint $refund_status    售后服务状态
     * @param string $real_name         用户真实姓名（从前台得到的）
     * @param string $phone             用户的电话号码，与购买时所用的号码一致
     * @param string $remark            售后备注信息
     *
     * @date:2016/02/18
     * @author Leen
     */
    public function updateReturnGoods($users_id, $refund_sn, $refund_status, $real_name='', $phone='', $remark='');


    /**
     * 取消退货申请
     * @param $order_id
     * @param $reason
     * @return mixed
     */
    public function cancelReturnGoods($refund_sn, $refund_status);


    /**
     * 根据服务单号获取服务单信息
     *
     * @param string $refund_sn         服务单编号
     *
     * @date:2016/02/18
     * @author Leen
     */
    public function getByRefundSn($refund_sn);


    /**
     * 根据订单号和订单商品编码获取服务单信息
     *
     * @param string $refund_sn         服务单编号
     *
     * @date:2016/02/26
     * @author Leen
     */
    public function getByOrderSnGoodsSn($order_sn, $goods_sn);

    /**
     * 生成售后单号
     *
     * @return string
     */
    public function makeRefundSn();

    public function countRefundGoods($user_id);

    public function countRefundGoodsNum($user_id);


    /**
     * 判断订单商品是否申请过售后
     * @param [type] $order_sn [description]
     * @param [type] $goods_id [description]
     */
    public function isHasRefund($order_sn, $goods_id);



}//end interface OrderService